package com.yehebl.orm.data.common;

import java.sql.Connection;
import java.sql.SQLException;

import org.springframework.jdbc.support.GeneratedKeyHolder;

/**
 * 底层方法
 * @author tzd
 *
 */
public interface IJdbc {

	/**
	 * 增删改
	 * 
	 * @param sql sql语句
	 * @return 影响条数
	 */
	int update(String sql, Object... objs) throws SQLException;
	
	
	/**
	 * 插入数据回写主键
	 * @param sql sql语句
	 * @param objs 参数
	 */
	int insert(String sql, GeneratedKeyHolder gk, Object... objs) throws SQLException;

	/**
	 * 增删改
	 * 
	 * @param sql sql语句
	 * @return 影响条数
	 */
	int update(String sql) throws SQLException;

	/**
	 * 批量增删改
	 * 
	 * @param sql     sql语句
	 * @param objs 参数
	 * @return 影响条数
	 */
	int[] batchUpdate(String sql, Object[]... objs) throws SQLException;

	/**
	 * 查询
	 * 
	 * @param sql sql语句
	 * @param objs 参数
	 */
	<T> T query(String sql, IResultSet<T> resultSet, Object... objs) throws Exception;

	/**
	 * 查询
	 * 
	 * @param sql sql语句
	 */
	<T> T query(String sql, IResultSet<T> resultSet) throws Exception;

	/**
	 * 执行sql
	 * @param sql sql语句
	 */
	void execute(String sql) throws Exception;
	
	
	/**
	 * 获取数据库链接
	 */
	Connection getConnection();
}
